import re
from datetime import datetime

from util.mylog import my_logger


def change_to_float(data: str):
    try:
        return float(data)
    except ValueError:
        return None

def change_to_int(data: str):
    try:
        return int(data)
    except ValueError:
        my_logger.error(f"{data} 转换为 int 失败")
        return None

def get_date_str(time_str: str):
    # 将字符串解析为datetime对象
    # 注意：确保输入字符串的格式与指定的格式匹配
    dt_obj = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
    # 提取日期部分，转换为字符串
    date_str = dt_obj.strftime("%Y-%m-%d")
    return date_str

def get_date(year, month, day) -> datetime:
    """返回组合后的日期"""
    return datetime(year, month, day)

def process_date_str(date: str) -> str | None:
    try:
        datetime.strptime(date, "%Y-%m-%d")
        return date
    except ValueError:
        return None

def get_year_month(year, month, day) -> str:
    return get_date(year, month, day).strftime("%Y-%m")


def is_today(date_str, date_format="%Y/%m/%d"):
    """
    判断给定的日期字符串是否是今天的日期。

    参数:
    - date_str: 给定的日期字符串，格式应与`date_format`匹配。
    - date_format: 日期字符串的格式，默认为"%Y/%m/%d"，可以根据需要调整。

    返回:
    - 如果给定日期是今天的日期返回True，否则返回False。
    """
    # 将给定日期字符串转换为datetime对象
    given_date = datetime.strptime(date_str, date_format).date()

    # 获取今天的日期
    today = datetime.now().date()

    # 比较两个日期
    return given_date == today

def get_ascii_sum(s) -> int:
    return sum(ord(c) for c in s)

def get_digit(s):
    match = re.search(r'\d+', s)
    if match:
        return change_to_int(match.group())
    else:
        my_logger.warning(f"{s} 没有数字")
        return s

if __name__ == '__main__':
    print(eval("1.33"))
    print(type(eval("1.33")))